package marina;

import java.util.Scanner;

public class J16Ch05Calculater {
	public static void main(String[] args) {
		String msg = "두 정수와 연산자를 입력하세요.";
		Scanner sc = new Scanner(System.in);
		// new 연산자를 이용한 객체 생성은 최대한 천천히 실행할 것!
		// 업캐스팅을 이용해서 참조 변수 cal선언
		J16Cal cal = null;
		J16CalService cs = new J16CalService();

		System.out.println(msg);
		int a = sc.nextInt();
		int b = sc.nextInt();
		String c = sc.next();

		switch (c) {
		case "+":
			cal = new J16Add();
			cal.setValue(a, b);
			cs.calculate(cal,"+");
			break;
		case "-":
			cal = new J16Sub();
			cal.setValue(a, b);
			cs.calculate(cal,"-");
			break;
		case "*":
			cal = new J16Mul();
			cal.setValue(a, b);
			cs.calculate(cal,"*");
			break;
		case "/":
			cal = new J16Div();
			cal.setValue(a, b);
			cs.calculate(cal,"/");
		}

		sc.close();
	}
}

class J16Cal {
	private int x;
	private int y;

	// 생성자는 생략
	public void setValue(int x, int y) {
		this.x = x;
		this.y = y;
	}

	@Override
	public String toString() {
		String result = "";
		result += x + "/" + y;
		return result;
	}

	public int getX() {
		return x;
	}

	public void setX(int x) {
		this.x = x;
	}

	public int getY() {
		return y;
	}

	public void setY(int y) {
		this.y = y;
	}
	
}

class J16Add extends J16Cal {
}

class J16Sub extends J16Cal {
}

class J16Mul extends J16Cal {
}

class J16Div extends J16Cal {
}

interface J16CalIService {
	public void calculate(J16Cal c, String type);
	int result = 0;
	switch(type){
	case "+" :  
		result = c.getX() + c.getY();
		berak;
	case "-" :  
		result = c.getX() - c.getY();
		berak;
	case "*" :  
		result = c.getX() * c.getY();
		berak;
	case "/" :  
		result = c.getX() / c.getY();
		berak;
	}
}

class J16CalService implements J16CalIService {

}